package tests;

import static org.junit.Assert.*;

import java.awt.Color;

import juego.Celda;
import juego.Laser;
import juego.Origen;
import juego.Tablero;

import org.junit.Test;

import exceptions.LaserException;
import exceptions.OrigenException;
import exceptions.TableroException;

/**
 * The Class testTablero.
 * @author Daniel Goldberg, Maria Eugenia Cura.
 */
public class testTablero {
	
	/**
	 * Test tablero.
	 * 
	 * Testea que se cree correctamente una celda y que esta misma
	 * se inserte en el tablero. Ademas testea metodos de celda, de origen y de laser.
	 */
	@Test
	public void testTableroNew() throws TableroException, OrigenException, LaserException {
		Tablero tableTest = null;
		Celda celdaTest= null;
		Celda celdaTest2 = null;
		Origen origenTest = null;
		Laser laserTest=null;
		
		origenTest = new Origen(1,255,0,0);
		celdaTest = new Celda();
		celdaTest2 = new Celda();
		laserTest = new Laser(0, 255, 0, 255);
		
		celdaTest2.agregarLaser(laserTest);
		tableTest = new Tablero(8, 7, "Titutlo de mi tablero");
		
		assertTrue(celdaTest.agregarElemento(origenTest));
		celdaTest2.agregarLaser(laserTest);
		
		//Test metodo esOrigen.
		assertTrue(celdaTest.esOrigen());
		
		assertTrue(tableTest.agregarCelda(celdaTest, 2, 2));
		//HAY SOLO UN PUNTO QUE ES DEL ORIGEN.
		assertTrue(tableTest.contarPuntos()==1);
		
		assertTrue(tableTest.agregarCelda(celdaTest2, 3, 2));
		//HAY UN LASER Y UN ORIGEN EN DIFERENTES CELDAS.
		assertTrue(tableTest.contarPuntos()==2);

		//Test metodo hayLaserColor
		assertTrue(celdaTest2.hayLaserColor(new Color(255,0,255)));

		tableTest.borrarLasersDibujados();
		//SE BORRO EL LASER, DEBE CONTAR SOLO UN PUNTO(DEL ORIGEN)
		assertTrue(tableTest.contarPuntos()==1);
		
		//Test metodo copiarelemento
		assertTrue(celdaTest.copiarElemento(celdaTest2));
		
	}
}
